import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Scanner;
//扫描指定目录，并找到名称中包含指定字符的所有普通文件（不包含目录），并且后续询问用户是否要删除该文件
public class IOdemo7 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入扫描的目录:");
        String find = scanner.next();
        System.out.println("请输入想要查找的文件");
        String select = scanner.next();
        //判断扫描的目录是否存在,查找的文件是否存在
        File find1 = new File(find);
        File select1 = new File(select);
        if (find1.exists() && select1.exists()) {
            scanDir(find1, select1);
        }
        else {
            System.out.println("查找失败");
        }
    }

    private static void scanDir(File find1, File select) {
        //把这些存到一个数组里面
        File[] files = find1.listFiles();
        if (files == null) {
            return;
        }
        for (File f : files) {
            System.out.println("当前遍历的内容" + f.getAbsolutePath());
            if (f.isFile()) {
                System.out.println("恭喜你,找到了");
                //searchInfile(f, select);
            } else if (f.isDirectory()) {
                scanDir(f, select);
            }
        }
    }

    private static void searchInfile(File f, String select) {
        // 通过这个方法在文件内部进行搜索
        // 1. 把文件内容都读取出来.
        try (InputStream inputStream = new FileInputStream(f)) {
            StringBuilder stringBuilder = new StringBuilder();
            while (true) {
                byte[] buffer = new byte[1024];
                int n = inputStream.read(buffer);
                if (n == -1) {
                    break;
                }
                // 此处只是读取出文件的一部分. 需要把文件内容整体拼接在一起.
                String s = new String(buffer, 0, n);
                stringBuilder.append(s);
            }

            // 加了打印之后, 可以看到, 文件内容是对的. 说明后面的匹配有问题.
            System.out.println("[debug] 文件内容: " + stringBuilder);

            // 当文件读取完毕, 循环结束之后, 此时 stringBuilder 就是包含文件整个内容的字符串了.
            if (stringBuilder.indexOf(select) == -1) {
                // 没找到要返回.
                return;
            }
            // 找到了, 打印文件的路径
            System.out.println("找到了! " + select + " 存在于 " + f.getAbsolutePath());
        } catch (IOException e) {
            throw new RuntimeException(e);

    }
    }
}